| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197 | 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
| System.register([], function (_export) {
//NOTE: Adding a fragment to the document causes the nodes to be removed from the fragment.
//NOTE: Adding to the fragment, causes the nodes to be removed from the document.
"use strict";
var View;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
return {
setters: [],
execute: function () {
View = (function () {
function View(fragment, behaviors, bindings, children, systemControlled, contentSelectors) {
_classCallCheck(this, View);
this.fragment = fragment;
this.behaviors = behaviors;
this.bindings = bindings;
this.children = children;
this.systemControlled = systemControlled;
this.contentSelectors = contentSelectors;
this.firstChild = fragment.firstChild;
this.lastChild = fragment.lastChild;
this.isBound = false;
this.isAttached = false;
}
View.prototype.created = function created(executionContext) {
var i,
ii,
behaviors = this.behaviors;
for (i = 0, ii = behaviors.length; i < ii; ++i) {
behaviors[i].created(executionContext);
}
};
View.prototype.bind = function bind(executionContext, systemUpdate) {
var context, behaviors, bindings, children, i, ii;
if (systemUpdate && !this.systemControlled) {
context = this.executionContext || executionContext;
} else {
context = executionContext || this.executionContext;
}
if (this.isBound) {
if (this.executionContext === context) {
return;
}
this.unbind();
}
this.isBound = true;
this.executionContext = context;
if (this.owner) {
this.owner.bind(context);
}
bindings = this.bindings;
for (i = 0, ii = bindings.length; i < ii; ++i) {
bindings[i].bind(context);
}
behaviors = this.behaviors;
for (i = 0, ii = behaviors.length; i < ii; ++i) {
behaviors[i].bind(context);
}
children = this.children;
for (i = 0, ii = children.length; i < ii; ++i) {
children[i].bind(context, true);
}
};
View.prototype.addBinding = function addBinding(binding) {
this.bindings.push(binding);
if (this.isBound) {
binding.bind(this.executionContext);
}
};
View.prototype.unbind = function unbind() {
var behaviors, bindings, children, i, ii;
if (this.isBound) {
this.isBound = false;
if (this.owner) {
this.owner.unbind();
}
bindings = this.bindings;
for (i = 0, ii = bindings.length; i < ii; ++i) {
bindings[i].unbind();
}
behaviors = this.behaviors;
for (i = 0, ii = behaviors.length; i < ii; ++i) {
behaviors[i].unbind();
}
children = this.children;
for (i = 0, ii = children.length; i < ii; ++i) {
children[i].unbind();
}
}
};
View.prototype.insertNodesBefore = function insertNodesBefore(refNode) {
var parent = refNode.parentNode;
parent.insertBefore(this.fragment, refNode);
};
View.prototype.appendNodesTo = function appendNodesTo(parent) {
parent.appendChild(this.fragment);
};
View.prototype.removeNodes = function removeNodes() {
var start = this.firstChild,
end = this.lastChild,
fragment = this.fragment,
next;
var current = start,
loop = true,
nodes = [];
while (loop) {
if (current === end) {
loop = false;
}
next = current.nextSibling;
this.fragment.appendChild(current);
current = next;
}
};
View.prototype.attached = function attached() {
var behaviors, children, i, ii;
if (this.isAttached) {
return;
}
this.isAttached = true;
if (this.owner) {
this.owner.attached();
}
behaviors = this.behaviors;
for (i = 0, ii = behaviors.length; i < ii; ++i) {
behaviors[i].attached();
}
children = this.children;
for (i = 0, ii = children.length; i < ii; ++i) {
children[i].attached();
}
};
View.prototype.detached = function detached() {
var behaviors, children, i, ii;
if (this.isAttached) {
this.isAttached = false;
if (this.owner) {
this.owner.detached();
}
behaviors = this.behaviors;
for (i = 0, ii = behaviors.length; i < ii; ++i) {
behaviors[i].detached();
}
children = this.children;
for (i = 0, ii = children.length; i < ii; ++i) {
children[i].detached();
}
}
};
return View;
})();
_export("View", View);
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL3ZpZXcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O01BR2EsSUFBSTs7Ozs7OztBQUFKLFVBQUk7QUFDSixpQkFEQSxJQUFJLENBQ0gsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDO2dDQUQ3RSxJQUFJOztBQUViLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUN6QyxjQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFDekMsY0FBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO0FBQ3RDLGNBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztBQUNwQyxjQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNyQixjQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6Qjs7QUFaVSxZQUFJLFdBY2YsT0FBTyxHQUFBLGlCQUFDLGdCQUFnQixFQUFDO0FBQ3ZCLGNBQUksQ0FBQztjQUFFLEVBQUU7Y0FBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUN0QyxlQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQztBQUM1QyxxQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9B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QUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7QUFFL0IsY0FBRyxJQUFJLENBQUMsVUFBVSxFQUFDO0FBQ2pCLGdCQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzs7QUFFeEIsZ0JBQUcsSUFBSSxDQUFDLEtBQUssRUFBQztBQUNaLGtCQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3ZCOztBQUVELHFCQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztBQUMzQixpQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUM7QUFDNUMsdUJBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN6Qjs7QUFFRCxvQkFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDekIsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDO0FBQzNDLHNCQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDeEI7V0FDRjtTQUNGOztlQTFLVSxJQUFJOzs7c0JBQUosSUFBSSIsImZpbGUiOiIvVXNlcnMvRWlzZW5iZXJnRWZmZWN0L0RvY3VtZW50cy9HaXRIdWIvVGhlIER1cmFuZGFsIFByb2plY3QvYXVyZWxpYS90ZW1wbGF0aW5nL3NyYy92aWV3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9OT1RFOiBBZGRpbmcgYSBmcmFnbWVudCB0byB0aGUgZG9jdW1lbnQgY2F1c2VzIHRoZSBub2RlcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGZyYWdtZW50LlxuLy9OT1RFOiBBZGRpbmcgdG8gdGhlIGZyYWdtZW50LCBjYXVzZXMgdGhlIG5vZGVzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQuXG5cbmV4cG9ydCBjbGFzcyBWaWV3IHtcbiAgY29uc3RydWN0b3IoZnJhZ21lbnQsIGJlaGF2aW9ycywgYmluZGluZ3MsIGNoaWxkcmVuLCBzeXN0ZW1Db250cm9sbGVkLCBjb250ZW50U2VsZWN0b3JzKXtcbiAgICB0aGlzLmZyYWdtZW50ID0gZnJhZ21lbnQ7XG4gICAgdGhpcy5iZWhhdmlvcnMgPSBiZWhhdmlvcnM7XG4gICAgdGhpcy5iaW5kaW5ncyA9IGJpbmRpbmdzO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLnN5c3RlbUNvbnRyb2xsZWQgPSBzeXN0ZW1Db250cm9sbGVkO1xuICAgIHRoaXMuY29udGVudFNlbGVjdG9ycyA9IGNvbnRlbnRTZWxlY3RvcnM7XG4gICAgdGhpcy5maXJzdENoaWxkID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcbiAgICB0aGlzLmxhc3RDaGlsZCA9IGZyYWdtZW50Lmxhc3RDaGlsZDtcbiAgICB0aGlzLmlzQm91bmQgPSBmYWxzZTtcbiAgICB0aGlzLmlzQXR0YWNoZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGNyZWF0ZWQoZXhlY3V0aW9uQ29udGV4dCl7XG4gICAgdmFyIGksIGlpLCBiZWhhdmlvcnMgPSB0aGlzLmJlaGF2aW9ycztcbiAgICBmb3IoaSA9IDAsIGlpID0gYmVoYXZpb3JzLmxlbmd0aDsgaSA8IGlpOyArK2kpe1xuICAgICAgYmVoYXZpb3JzW2ldLmNyZWF0ZWQoZXhlY3V0aW9uQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgYmluZChleGVjdXRpb25Db250ZXh0LCBzeXN0ZW1VcGRhdGUpe1xuICAgIHZhciBjb250ZXh0LCBiZWhhdmlvcnMsIGJpbmRpbmdzLCBjaGlsZHJlbiwgaSwgaWk7XG5cbiAgICBpZihzeXN0ZW1VcGRhdGUgJiYgIXRoaXMuc3lzdGVtQ29udHJvbGxlZCl7XG4gICAgICBjb250ZXh0ID0gdGhpcy5leGVjdXRpb25Db250ZXh0IHx8IGV4ZWN1dGlvbkNvbnRleHQ7XG4gICAgfWVsc2V7XG4gICAgICBjb250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dCB8fCB0aGlzLmV4ZWN1dGlvbkNvbnRleHQ7XG4gICAgfVxuXG4gICAgaWYodGhpcy5pc0JvdW5kKXtcbiAgICAgIGlmKHRoaXMuZXhlY3V0aW9uQ29udGV4dCA9PT0gY29udGV4dCl7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy51bmJpbmQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzQm91bmQgPSB0cnVlO1xuICAgIHRoaXMuZXhlY3V0aW9uQ29udGV4dCA9IGNvbnRleHQ7XG5cbiAgICBpZih0aGlzLm93bmVyKXtcbiAgICAgIHRoaXMub3duZXIuYmluZChjb250ZXh0KTtcbiAgICB9XG5cbiAgICBiaW5kaW5ncyA9IHRoaXMuYmluZGluZ3M7XG4gICAgZm9yKGkgPSAwLCBpaSA9IGJpbmRpbmdzLmxlbmd0aDsgaSA8IGlpOyArK2kpe1xuICAgICAgYmluZGluZ3NbaV0uYmluZChjb250ZXh0KTtcbiAgICB9XG5cbiAgICBiZWhhdmlvcnMgPSB0aGlzLmJlaGF2aW9ycztcbiAgICBmb3IoaSA9IDAsIGlpID0gYmVoYXZpb3JzLmxlbmd0aDsgaSA8IGlpOyArK2kpe1xuICAgICAgYmVoYXZpb3JzW2ldLmJpbmQoY29udGV4dCk7XG4gICAgfVxuXG4gICAgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgIGZvcihpID0gMCwgaWkgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGNoaWxkcmVuW2ldLmJpbmQoY29udGV4dCwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQmluZGluZyhiaW5kaW5nKXtcbiAgICB0aGlzLmJpbmRpbmdzLnB1c2goYmluZGluZyk7XG5cbiAgICBpZih0aGlzLmlzQm91bmQpe1xuICAgICAgYmluZGluZy5iaW5kKHRoaXMuZXhlY3V0aW9uQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgdW5iaW5kKCl7XG4gICAgdmFyIGJlaGF2aW9ycywgYmluZGluZ3MsIGNoaWxkcmVuLCBpLCBpaTtcblxuICAgIGlmKHRoaXMuaXNCb3VuZCl7XG4gICAgICB0aGlzLmlzQm91bmQgPSBmYWxzZTtcblxuICAgICAgaWYodGhpcy5vd25lcil7XG4gICAgICAgIHRoaXMub3duZXIudW5iaW5kKCk7XG4gICAgICB9XG5cbiAgICAgIGJpbmRpbmdzID0gdGhpcy5iaW5kaW5ncztcbiAgICAgIGZvcihpID0gMCwgaWkgPSBiaW5kaW5ncy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgYmluZGluZ3NbaV0udW5iaW5kKCk7XG4gICAgICB9XG5cbiAgICAgIGJlaGF2aW9ycyA9IHRoaXMuYmVoYXZpb3JzO1xuICAgICAgZm9yKGkgPSAwLCBpaSA9IGJlaGF2aW9ycy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgICAgYmVoYXZpb3JzW2ldLnVuYmluZCgpO1xuICAgICAgfVxuXG4gICAgICBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgICBmb3IoaSA9IDAsIGlpID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICAgIGNoaWxkcmVuW2ldLnVuYmluZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluc2VydE5vZGVzQmVmb3JlKHJlZk5vZGUpe1xuICAgIHZhciBwYXJlbnQgPSByZWZOb2RlLnBhcmVudE5vZGU7XG4gICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLmZyYWdtZW50LCByZWZOb2RlKTtcbiAgfVxuXG4gIGFwcGVuZE5vZGVzVG8ocGFyZW50KXtcbiAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5mcmFnbWVudCk7XG4gIH1cblxuICByZW1vdmVOb2Rlcygpe1xuICAgIHZhciBzdGFydCA9IHRoaXMuZmlyc3RDaGlsZCxcbiAgICAgICAgZW5kID0gdGhpcy5sYXN0Q2hpbGQsXG4gICAgICAgIGZyYWdtZW50ID0gdGhpcy5mcmFnbWVudCxcbiAgICAgICAgbmV4dDtcblxuICAgIHZhciBjdXJyZW50ID0gc3RhcnQsXG4gICAgICAgIGxvb3AgPSB0cnVlLFxuICAgICAgICBub2RlcyA9IFtdO1xuXG4gICAgd2hpbGUobG9vcCl7XG4gICAgICBpZihjdXJyZW50ID09PSBlbmQpe1xuICAgICAgICBsb29wID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIG5leHQgPSBjdXJyZW50Lm5leHRTaWJsaW5nO1xuICAgICAgdGhpcy5mcmFnbWVudC5hcHBlbmRDaGlsZChjdXJyZW50KTtcbiAgICAgIGN1cnJlbnQgPSBuZXh0O1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaGVkKCl7XG4gICAgdmFyIGJlaGF2aW9ycywgY2hpbGRyZW4sIGksIGlpO1xuXG4gICAgaWYodGhpcy5pc0F0dGFjaGVkKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzQXR0YWNoZWQgPSB0cnVlO1xuXG4gICAgaWYodGhpcy5vd25lcil7XG4gICAgICB0aGlzLm93bmVyLmF0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgYmVoYXZpb3JzID0gdGhpcy5iZWhhdmlvcnM7XG4gICAgZm9yKGkgPSAwLCBpaSA9IGJlaGF2aW9ycy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGJlaGF2aW9yc1tpXS5hdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICBmb3IoaSA9IDAsIGlpID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICBjaGlsZHJlbltpXS5hdHRhY2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGRldGFjaGVkKCl7XG4gICAgdmFyIGJlaGF2aW9ycywgY2hpbGRyZW4sIGksIGlpO1xuXG4gICAgaWYodGhpcy5pc0F0dGFjaGVkKXtcbiAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IGZhbHNlO1xuXG4gICAgICBpZih0aGlzLm93bmVyKXtcbiAgICAgICAgdGhpcy5vd25lci5kZXRhY2hlZCgpO1xuICAgICAgfVxuXG4gICAgICBiZWhhdmlvcnMgPSB0aGlzLmJlaGF2aW9ycztcbiAgICAgIGZvcihpID0gMCwgaWkgPSBiZWhhdmlvcnMubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICAgIGJlaGF2aW9yc1tpXS5kZXRhY2hlZCgpO1xuICAgICAgfVxuXG4gICAgICBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgICBmb3IoaSA9IDAsIGlpID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICAgIGNoaWxkcmVuW2ldLmRldGFjaGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0= |